<template>
	<view>
		<!-- 搜索框组件 -->
		<my-search @click="jumpSearchPage"></my-search>
		<!-- 滚动容器 -->
		<view class="scroll-container">
			<!-- 左边滚动区域 -->
			<scroll-view class="left-scroll" scroll-y="true" :style="{ height: wh + 'px' }">
				<block v-for="(item, index) in cateList" :key="index">
					<view :class="['left-scroll-item', index === active ? 'active' : '']" @click="checkActive(index)">{{ item.cat_name }}</view>
				</block>
			</scroll-view>
			<!-- 右边滚动区域 -->
			<scroll-view class="right-scroll" scroll-y="true" :style="{ height: wh + 'px' }" :scroll-top="scrollTop">
				<!-- 二级分类区域 -->
				<view class="two-level" v-for="(item1, index1) in cateTwoLevelList" :key="index1">
					<!-- 二级分类标题 -->
					<view class="two-level-title">- {{ item1.cat_name }} -</view>
					<!-- 三级分类区域 -->
					<view class="three-level">
						<view class="three-level-item" v-for="(item2, index2) in item1.children" :key="index2" @click="jumpGoodsListPage(item2)">
							<!-- 三级分类图标 -->
							<image :src="item2.cat_icon"></image>
							<!-- 三级分类标题 -->
							<text>{{ item2.cat_name }}</text>
						</view>
					</view>
				</view>
			</scroll-view>
		</view>
	</view>
</template>

<script>
// 导入组件
import mySearch from '@/components/common/my-search.vue';
import badgeMix from '@/mixins/tabbar-badge.js';
export default {
	mixins: [badgeMix],
	// 注册组件
	components: { mySearch },
	data() {
		return {
			// 可使用窗口高度
			wh: 0,
			// 分类列表
			cateList: [],
			// 二级分类列表
			cateTwoLevelList: [],
			// 是否选中
			active: 0,
			// 滚动条距离顶部的距离
			scrollTop: 0
		};
	},

	onLoad() {
		// 获取系统信息同步接口
		this.getSystem();
		// 获取分类列表
		this.getCateList();
	},
	methods: {
		// 获取系统信息同步接口
		getSystem() {
			const system = uni.getSystemInfoSync();
			// 再减去搜索框组件的高
			this.wh = system.windowHeight - 50;
		},
		// 获取分类列表
		async getCateList() {
			const { data: res } = await uni.$http.get('/api/public/v1/categories');
			if (res.meta.status !== 200) return uni.$showMsg();
			this.cateList = res.message;
			// 默认第一个一级分类下的二级分类列表
			this.cateTwoLevelList = this.cateList[0].children;
		},
		// 切换选中
		checkActive(index) {
			// 将当前一级分类的索引切换选中
			this.active = index;
			// 获取当前一级分类下的二级分类列表
			this.cateTwoLevelList = this.cateList[index].children;
			// 动态设置滚动条与顶部的距离、这个值前后不能一致、要0和1之间切换
			this.scrollTop = this.scrollTop === 0 ? 1 : 0;
		},
		// 跳转商品列表页面
		jumpGoodsListPage(item) {
			uni.navigateTo({
				url: '/subpkg/goods/goods_list?cid=' + item.cat_id
			});
		},
		// 跳转搜索页面
		jumpSearchPage() {
			uni.navigateTo({
				url: '/subpkg/common/search'
			});
		}
	}
};
</script>

<style lang="scss">
// 滚动容器
.scroll-container {
	display: flex;
	// 左边滚动区域
	.left-scroll {
		flex: 25%;
		.left-scroll-item {
			background-color: #f8f8f8;
			text-align: center;
			line-height: 60px;
			font-size: 12px;
			position: relative;
			&.active {
				background-color: #ffffff;
				color: #d81e06;
				font-weight: bold;
			}
		}
	}
	// 右边滚动区域
	.right-scroll {
		background-color: #ffffff;
		flex: 75%;
		// 二级分类标题
		.two-level-title {
			font-size: 12px;
			font-weight: bold;
			text-align: center;
			padding: 15px 0;
		}
		// 三级分类
		.three-level {
			display: flex;
			flex-wrap: wrap;
			.three-level-item {
				width: 33.33%;
				display: flex;
				flex-direction: column;
				justify-content: center;
				align-items: center;
				image {
					width: 60px;
					height: 60px;
					padding: 10px;
				}
				text {
					font-size: 12px;
				}
			}
		}
	}
}
</style>
